﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;

namespace QuanLyNhaHang
{
    public partial class QLPhieuNhap : Form
    {
        private DataTable dt,dtt;        
        public QLPhieuNhap()
        {
            InitializeComponent();
        }        

        private void buttonThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void QLPhieuNhap_Load(object sender, EventArgs e)
        {
            loadData();
        }

        private void loadData()
        {
            dt = BUSPhieuNhap.getAll();
            dataGridViewDSPhieuNhap.DataSource = dt;            
            dataGridViewDSPhieuNhap.Columns["NgayNhap"].HeaderText = "Ngày Nhập";
            dataGridViewDSPhieuNhap.Columns["MaPhieuNhap"].HeaderText = "Mã phiếu nhập";
            dataGridViewDSPhieuNhap.Columns["TenNCC"].HeaderText = "Tên nhà cung cấp";            
            dataGridViewDSPhieuNhap.Columns.Remove("MaNCC");
            
            listBoxDSNVL.DataSource = BUSNguyenVatLieu.getAll();
            listBoxDSNVL.ValueMember = "MaNVL";
            listBoxDSNVL.DisplayMember = "TenNVL";

            comboBoxMaNCC.DataSource = BUSNhaCungCap.getAll();
            comboBoxMaNCC.DisplayMember = "TenNCC";
            comboBoxMaNCC.ValueMember = "MaNCC";

            textBoxMaPhieu.Text = BUSPhieuNhap.getMaPhieuNhap().ToString();

            int maphieunhap = int.Parse(dataGridViewDSPhieuNhap.CurrentRow.Cells["MaPhieuNhap"].Value.ToString());
            dataGridViewDSChiTietPhieuNhap.DataSource = BUSChiTietPhieuNhap.getAll(maphieunhap);
        }

        private void reloadDatagrid()
        {
            dt = BUSPhieuNhap.getAll();
            dataGridViewDSPhieuNhap.DataSource = dt;
        }

        private void reloadDatagrid2()
        {
            int maphieunhap = (int)dataGridViewDSPhieuNhap.CurrentRow.Cells["MaPhieuNhap"].Value;           
            dtt = BUSChiTietPhieuNhap.getAll(maphieunhap);
            dataGridViewDSChiTietPhieuNhap.DataSource = dtt;
        }

        private void buttonThem2_Click(object sender, EventArgs e)
        {
            addPhieuNhap();
        }

        private void addPhieuNhap()
        {
            var obj = new DTOPhieuNhap()
            {
                MaPhieuNhap = int.Parse(textBoxMaPhieu.Text.Trim()),
                NgayNhap = DateTime.Parse(dateTimePickerNgayNhap.Text.Trim()),
                MaNCC = (int)comboBoxMaNCC.SelectedValue,
            };
            if (check(obj))
            {
                if (BUSPhieuNhap.add(obj) > 0)
                {
                    MessageBox.Show("Thêm mới thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    reloadDatagrid();
                    resetText();
                }
                else
                {
                    MessageBox.Show("Thêm mới thất bại", "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private bool check(DTOPhieuNhap obj)
        {
            StringBuilder str = new StringBuilder();

            if (string.IsNullOrEmpty(obj.NgayNhap.ToString()))
            {
                str.AppendLine("Ngày nhập không được bỏ trống.");
            }

            if (str.Length > 0)
            {
                MessageBox.Show(str.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }            
            return true;
        }

        private void resetText()
        {
            dateTimePickerNgayNhap.ResetText();
            comboBoxMaNCC.ResetText();
            textBoxMaPhieu.Text = BUSPhieuNhap.getMaPhieuNhap().ToString();
        }

        private void dataGridViewDSPhieuNhap_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            textBoxMaPhieu.Text = dataGridViewDSPhieuNhap.CurrentRow.Cells[0].Value.ToString();
            dateTimePickerNgayNhap.Text = dataGridViewDSPhieuNhap.CurrentRow.Cells[1].Value.ToString();
            comboBoxMaNCC.SelectedValue = dt.Rows[dataGridViewDSPhieuNhap.CurrentRow.Index]["MaNCC"].ToString();
            
            int maphieunhap = (int)dataGridViewDSPhieuNhap.CurrentRow.Cells["MaPhieuNhap"].Value;
            dtt = BUSChiTietPhieuNhap.getAll(maphieunhap);
            dataGridViewDSChiTietPhieuNhap.DataSource = dtt;            
            dataGridViewDSChiTietPhieuNhap.Columns.Remove("MaPhieuNhap");
            dataGridViewDSChiTietPhieuNhap.Columns["GiaTien"].HeaderText = "Giá Tiền";
            dataGridViewDSChiTietPhieuNhap.Columns["MaNVL"].HeaderText = "Mã nguyên vật liệu";
            dataGridViewDSChiTietPhieuNhap.Columns["SoLuongNhap"].HeaderText = "Số lượng nhập";
            dataGridViewDSChiTietPhieuNhap.Columns["TongTien"].HeaderText = "Tổng tiền";

            buttonSua2.Enabled = true;
        }

        private void buttonXoa2_Click(object sender, EventArgs e)
        {
            if (dataGridViewDSPhieuNhap.SelectedRows.Count > 0)
            {
                BUSPhieuNhap.del(new DTOPhieuNhap()
                {
                    MaPhieuNhap = (int)dataGridViewDSPhieuNhap.CurrentRow.Cells[0].Value
                });
                reloadDatagrid();
            }
        }

        private void buttonSua2_Click(object sender, EventArgs e)
        {
            var obj = new DTOPhieuNhap()
            {
                MaPhieuNhap = int.Parse(textBoxMaPhieu.Text.Trim()),
                NgayNhap = DateTime.Parse(dateTimePickerNgayNhap.Text),
                MaNCC = (int)comboBoxMaNCC.SelectedValue,
            };
            if (check(obj))
            {
                if (BUSPhieuNhap.edit(obj) > 0)
                {
                    MessageBox.Show("Sửa dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    reloadDatagrid();
                }
                else
                {
                    MessageBox.Show("Sửa dữ liệu thất bại", "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            buttonSua2.Enabled = false;
        }

        private void dataGridViewDSChiTietPhieuNhap_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            textBoxSoLuongNhap.Text = dataGridViewDSChiTietPhieuNhap.CurrentRow.Cells["SoLuongNhap"].Value.ToString();
            textBoxGiaTien.Text = dataGridViewDSChiTietPhieuNhap.CurrentRow.Cells["GiaTien"].Value.ToString();
            listBoxDSNVL.SelectedValue = dataGridViewDSChiTietPhieuNhap.CurrentRow.Cells["MaNVL"].Value;
            buttonSua.Enabled = true;
        }

        private void resetText2()
        {            
            textBoxSoLuongNhap.ResetText();
            textBoxGiaTien.ResetText();
            listBoxDSNVL.ResetText();
        }

        private void buttonReset_Click(object sender, EventArgs e)
        {
            resetText2();
        }

        private void buttonThem_Click(object sender, EventArgs e)
        {
            addChiTietPhieuNhap();
        }

        private void addChiTietPhieuNhap()
        {
            var obj = new DTOChiTietPhieuNhap();
            if (checkChiTietPhieuNhap(ref obj))
            {
                if (BUSChiTietPhieuNhap.add(obj) > 0)
                {
                    MessageBox.Show("Thêm mới thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    reloadDatagrid2();
                    resetText2();
                }
                else
                {
                    MessageBox.Show("Thêm mới thất bại", "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private bool checkChiTietPhieuNhap(ref DTOChiTietPhieuNhap obj)
        {
            StringBuilder str = new StringBuilder();
            if (string.IsNullOrEmpty(textBoxSoLuongNhap.Text.Trim()))
            {
                str.AppendLine("Số lượng nhập không được bỏ trống.");
            }
            else
            {
                int soluongnhap;
                int.TryParse(textBoxSoLuongNhap.Text, out soluongnhap);
                if (soluongnhap < 1 || soluongnhap > 1000)
                {
                    str.AppendLine("Số lượng nhập phải nằm trong khoảng từ 1 cho đến 1000");
                }
            }
            
            if (string.IsNullOrEmpty(textBoxGiaTien.Text.Trim()))
            {
                str.AppendLine("Giá tiền không được bỏ trống.");
            }
            else
            {
                int giatien;
                int.TryParse(textBoxGiaTien.Text, out giatien);              
                if (giatien < 1000 || giatien > 10000000)
                {
                    str.AppendLine("Giá tiền phải nằm trong khoảng từ 1000 cho đến 10 triệu");
                }
            }

            if (str.Length > 0)
            {
                MessageBox.Show(str.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            if (dataGridViewDSChiTietPhieuNhap.SelectedRows.Count > 0)
            {
                obj.id = int.Parse(dataGridViewDSChiTietPhieuNhap.CurrentRow.Cells["ID"].Value.ToString());
            }
            obj.GiaTien = float.Parse(textBoxGiaTien.Text.Trim());
            obj.MaPhieuNhap = int.Parse(dataGridViewDSPhieuNhap.CurrentRow.Cells["MaPhieuNhap"].Value.ToString());
            obj.SoLuongNhap = int.Parse(textBoxSoLuongNhap.Text);
            obj.MaNVL = listBoxDSNVL.SelectedValue.ToString();
                                    
            return true;
        }

        private void buttonXoa_Click(object sender, EventArgs e)
        {
            if (dataGridViewDSChiTietPhieuNhap.SelectedRows.Count > 0)
            {
                BUSChiTietPhieuNhap.del(new DTOChiTietPhieuNhap()
                {
                    id = (int)dataGridViewDSChiTietPhieuNhap.CurrentRow.Cells["ID"].Value
                });
                reloadDatagrid2();
            }
        }

        private void buttonSua_Click(object sender, EventArgs e)
        {
            var obj = new DTOChiTietPhieuNhap();           
            if (checkChiTietPhieuNhap(ref obj))
            {
                if (BUSChiTietPhieuNhap.edit(obj) > 0)
                {
                    MessageBox.Show("Sửa dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    reloadDatagrid2();
                }
                else
                {
                    MessageBox.Show("Sửa dữ liệu thất bại", "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            buttonSua.Enabled = false;
        }
    }
}
